package com.tabnet.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.tabnet.beans.produit.Etat;
import com.tabnet.dao.DAOEtat;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;
import com.tabnet.dao.DAOUtilitaire;

public class EtatDAOImpl implements DAOEtat {
	
	private static final String SQL_SELECT_BY_ID  		= "SELECT * FROM Etat WHERE Ref_Etat = ?";

    private DAOFactory daoFactory;
	
    public EtatDAOImpl( DAOFactory daoFactory ) {
        this.daoFactory = daoFactory;
    }
    
	@Override
	public Etat trouverEtat(String ref) throws DAOException {
		Connection connexion = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        Etat etat = new Etat();
        etat.setRef(ref);
        try {
            /* Récupération d'une connexion depuis la Factory */
            connexion = daoFactory.getConnection();
            /*
             * Préparation de la requête avec les objets passés en arguments
             * (ici, uniquement un id) et exécution.
             */
            preparedStatement =  DAOUtilitaire.initialisationRequetePreparee( connexion, SQL_SELECT_BY_ID, false, ref );
            resultSet = preparedStatement.executeQuery();
            /* Parcours de la ligne de données retournée dans le ResultSet */
            if ( resultSet.next() ) {
            	etat.setDescription( resultSet.getString("Description_Etat") );
            }
        } catch ( SQLException e ) {
            throw new DAOException( e );
        } finally {
            DAOUtilitaire.fermeturesSilencieuses( resultSet, preparedStatement, connexion );
        }
		
		return etat;
	}

}
